﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Empleados : System.Web.UI.Page
{
    Cargo cargo = new Cargo();
    Area area = new Area();
    Empleado emp = new Empleado();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            listarCargos();
            listarAreas();
            listarEmpleados();
        }

        if (Session["datosEmpleado"] != null)
        {
            Empleado emp = ((Empleado)Session["datosEmpleado"]);

            txtCodigo.Text = emp.codigo;
            txtApellidos.Text = emp.apellidos;
            txtNombres.Text = emp.nombres;
            ddlCargo.SelectedValue = emp.cargo;
            ddlArea.SelectedValue = emp.area;
            txtTelefono.Text = emp.telefono;
            txtFechaNacimiento.Text = emp.fechaNacimiento;
            txtDireccion.Text = emp.direccion;
            txtDni.Text = emp.dni;
            txtCorreo.Text = emp.correo;

            Session["datosEmpleado"] = null;
        }

    }

    public void listarEmpleados()
    {
        GridView1.DataSource = emp.listarTodos();
        GridView1.DataBind();

        GridView1.Columns[0].HeaderStyle.Width = 25;
    }

    public void limpiarControles()
    {
        txtCodigo.Text = string.Empty;
        txtApellidos.Text = string.Empty;
        txtNombres.Text = string.Empty;
        ddlCargo.SelectedIndex = 0;
        ddlArea.SelectedIndex = 0;
        txtTelefono.Text = string.Empty;
        txtFechaNacimiento.Text = string.Empty;
        txtDireccion.Text = string.Empty;
        txtDni.Text = string.Empty;
        txtCorreo.Text = string.Empty;
    }

    public void listarCargos()
    {
        ddlCargo.DataSource = cargo.listarCargos();
        ddlCargo.DataTextField = "descripcion";
        ddlCargo.DataValueField = "codigo";
        ddlCargo.DataBind();
    }

    public void listarAreas()
    {
        ddlArea.DataSource = area.listarAreas();
        ddlArea.DataTextField = "descripcion";
        ddlArea.DataValueField = "codigo";
        ddlArea.DataBind();
    }

    protected void btnDate_Click(object sender, EventArgs e)
    {
        Empleado empleado = new Empleado();

        empleado.codigo = txtCodigo.Text;
        empleado.apellidos = txtApellidos.Text;
        empleado.nombres = txtNombres.Text;
        empleado.cargo = ddlCargo.SelectedValue;
        empleado.area = ddlArea.SelectedValue;
        empleado.telefono = txtTelefono.Text;
        empleado.fechaNacimiento = txtFechaNacimiento.Text;
        empleado.direccion = txtDireccion.Text;
        empleado.dni = txtDni.Text;
        empleado.correo = txtCorreo.Text;

        Session["datosEmpleado"] = empleado;
    }

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow fila = GridView1.SelectedRow;
        txtCodigo.Text = fila.Cells[1].Text;
        txtApellidos.Text = fila.Cells[2].Text;
        txtNombres.Text = fila.Cells[3].Text;
        ddlCargo.SelectedValue = ddlCargo.Items.FindByText(fila.Cells[4].Text).Value;
        ddlArea.SelectedValue = ddlArea.Items.FindByText(fila.Cells[5].Text).Value;
        txtTelefono.Text = fila.Cells[6].Text;
        txtFechaNacimiento.Text = Convert.ToDateTime(fila.Cells[7].Text).ToString("MM/dd/yyyy");
        txtDireccion.Text = fila.Cells[8].Text;
        txtDni.Text = fila.Cells[9].Text;
        txtCorreo.Text = fila.Cells[10].Text;
    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataSource = emp.listarTodos();
        GridView1.DataBind();
    }

    protected void btnAgregar_Click(object sender, EventArgs e)
    {
        Empleado empleado = new Empleado();
        empleado.codigo = txtCodigo.Text;
        empleado.apellidos = txtApellidos.Text;
        empleado.nombres = txtNombres.Text;
        empleado.cargo = ddlCargo.SelectedValue;
        empleado.area = ddlArea.SelectedValue;
        empleado.telefono = txtTelefono.Text;
        empleado.fechaNacimiento = txtFechaNacimiento.Text;
        empleado.direccion = txtDireccion.Text;
        empleado.dni = txtDni.Text;
        empleado.correo = txtCorreo.Text;

        emp.agregar(empleado);

        Session["datosEmpleado"] = null;
        limpiarControles();
        listarEmpleados();  
    }

    protected void btnActualizar_Click(object sender, EventArgs e)
    {
        Empleado empleado = new Empleado();
        empleado.codigo = txtCodigo.Text;
        empleado.apellidos = txtApellidos.Text;
        empleado.nombres = txtNombres.Text;
        empleado.cargo = ddlCargo.SelectedValue;
        empleado.area = ddlArea.SelectedValue;
        empleado.telefono = txtTelefono.Text;
        empleado.fechaNacimiento = txtFechaNacimiento.Text;
        empleado.direccion = txtDireccion.Text;
        empleado.dni = txtDni.Text;
        empleado.correo = txtCorreo.Text;

        emp.actualizar(empleado);

        Session["datosEmpleado"] = null;
        limpiarControles();
        listarEmpleados();
    }

    protected void btnEliminar_Click(object sender, EventArgs e)
    {
        emp.eliminar(txtCodigo.Text);
        Session["datosEmpleado"] = null;
        limpiarControles();
        listarEmpleados();
    }

}